package com.cfs.svc.sys;

import java.util.List;

import javax.ws.rs.GET;
import javax.ws.rs.POST;
import javax.ws.rs.PUT;
import javax.ws.rs.Path;
import javax.ws.rs.PathParam;

import com.cfs.po.sys.CommonBean;
import com.cfs.po.sys.GenRes;
import com.cfs.po.sys.LongId;
import com.cfs.po.sys.Org;

@Path("/Orgs")
public interface OrgService {

	/**
	 * 组织添加
	 * @param orgs
	 * @return
	 */
	@POST
	@Path("/c")
	public GenRes add(Org[] orgs);
	
	/**
	 * 组织修改
	 * @param orgs
	 * @return
	 */
	@PUT
	@Path("/u")
	public GenRes update(Org[] orgs);
	
	/**
	 * POST
	 * 组织删除
	 * @param ids 对数组进行包装
	 * @return
	 */
	@POST
	@Path("/d")
	public GenRes delete(LongId oid);
	
	/**
	 * 根据id获取组织
	 * @param id
	 * @return
	 */
	@GET
	@Path("/q/{id}")
	public Org get(@PathParam("id") long id);
	
	/**
	 * 查询子组织
	 */
	@GET
	@Path("/q/sub/{parentId}")
	public Org[] getSub(@PathParam("parentId") String parentId);
	/**
	 * 查询所有子组织
	 */
	@GET
	@Path("/q/allSub/{parentId}")
	public Org[] getAllSub(@PathParam("parentId") String parentIds);
	
	/**
	 * 移动组织
	 */
	@GET
	@Path("/u/move/{id}/{move2id}")
	public GenRes move2(@PathParam("id") Long id, @PathParam("move2id") Long move2id);
	
	/**
	 * 禁用/激活组织
	 */
	@PUT
	@Path("/u/forbid")
	public GenRes forbidOrg(long id);
	
	/**
	 * 根据Levels获取组织
	 */
	@GET
	@Path("/q/orgs/{levels}")
	public Org[] getOrgsByLevels(@PathParam("levels") int levels);
	
	/**
	 * 分公司查办事处
	 */
	@GET
	@Path("/q/agency/{id}")
	public Org[] getAllAgency(@PathParam("id") long id);
	/**
	 * 分公司查片区
	 */
	@GET
	@Path("/q/area/{id}")
	public Org[] getAllArea(@PathParam("id") long id);
	/**
	 * 分公司查门店
	 */
	@GET
	@Path("/q/point/{id}")
	public Org[] getAllPoint(@PathParam("id") long id);
	
	/**
	 * 办事处查询门店
	 */
	@GET
	@Path("/q/areaPoint/{id}")
	public Org[] getAgencyPoint(@PathParam("id") long id);
	
	/**
	 * 
	 */
	@GET
	@Path("/init")
	public void initOrgs();
	
	/**
	 * 名字模糊查询
	 */
	@POST
	@Path("/q/orgs/name")
	public Org[] getOrgByName(Org org);
	
	/**
	 * 电视二期需求新增
	 * 根据登录的组织id及组织层级信息，获取其
	 * 关联子组织信息
	 * 1.总部查分公司
	 * 2.分公司查办事处
	 * 3.办事处查片区
	 * 4.片区查门店
	 * 5.门店自查
	 */
	@GET
	@Path("/q/getSubOrgArrays/{id}/{level}")
    public Org[] getSubOrgArrays(@PathParam("id") long id,@PathParam("level") int level);
	
	/**
	 * 电视二期需求新增
	 * 根据登录的组织id及组织层级信息，获取其
	 * 关联子组织信息
	 * 1.总部查分公司
	 * 2.分公司查办事处
	 * 3.办事处查片区
	 * 4.片区查门店
	 * 5.门店自查
	 */
	@POST
	@Path("/q/getSubOrgArraysForPad")
    public List<Org> getSubOrgArraysForPad(CommonBean commBean);
	
	
	
	/**
	 * 电视二期需求新增
	 * 根据登录的组织id及组织层级信息，获取
	 * 该节点下的所有门店组织信息
	 * 1.总部查分公司
	 * 2.分公司查办事处
	 * 3.办事处查片区
	 * 4.片区查门店
	 * 5.门店自查
	 */
	@GET
	@Path("/q/getPointsByOrgs/{id}/{level}")
    public Long[] getPointsByOrgs(@PathParam("id") long id,@PathParam("level") int level);
	
}
